#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
A股上证指数量化交易工具
一个为零基础用户设计的简单量化交易系统
"""

# 导入所需的模块
import sys
import os

# 添加当前目录到Python路径中
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 导入我们创建的模块
from data_fetcher import get_sh_index_data, calculate_moving_average
from strategies import ma_strategy, evaluate_strategy
from backtest import backtest_strategy
from visualization import plot_sh_index_data


def main():
    """
    主函数：程序的入口点
    """
    print("欢迎使用A股上证指数量化交易工具！")
    print("本工具将演示一个简单的双均线交易策略。")
    print("=" * 50)
    
    # 步骤1：获取上证指数数据
    print("正在获取上证指数历史数据...")
    try:
        # 获取2020年到2023年的上证指数数据
        sh_index_data = get_sh_index_data(start_date="20200101", end_date="20231231")
        print(f"成功获取到 {len(sh_index_data)} 条数据记录。")
    except Exception as e:
        print(f"获取数据时出错: {e}")
        return
    
    # 显示部分数据样例
    print("\n数据样例（前5行）：")
    print(sh_index_data.head())
    
    # 步骤2：应用交易策略
    print("\n正在应用双均线交易策略...")
    # 使用5日和20日均线策略
    signals = ma_strategy(sh_index_data, short_window=5, long_window=20)
    
    # 评估策略
    strategy_evaluation = evaluate_strategy(signals)
    print(f"策略产生了 {strategy_evaluation['total_signals']} 个交易信号，其中：")
    print(f"  - 买入信号：{strategy_evaluation['buy_signals']} 个")
    print(f"  - 卖出信号：{strategy_evaluation['sell_signals']} 个")
    
    # 步骤3：回测策略
    print("\n正在进行策略回测...")
    backtest_result = backtest_strategy(signals, initial_capital=10000.0)
    print("回测结果：")
    print(f"  - 初始资金：{backtest_result['initial_capital']:.2f} 元")
    print(f"  - 最终资产：{backtest_result['final_asset']:.2f} 元")
    print(f"  - 总收益率：{backtest_result['total_return']:.2f}%")
    
    # 步骤4：可视化结果
    print("\n正在生成可视化图表...")
    print("请关闭图表窗口以继续。")
    
    # 绘制价格和交易信号图
    plot_sh_index_data(sh_index_data, signals, "上证指数价格与交易信号")
    
    # 如果需要，可以添加更多分析和可视化
    print("\n分析完成！感谢使用本量化交易工具。")


# 程序入口点
if __name__ == "__main__":
    main()